package net.cyndeline.GUI

import net.cyndeline.entitySystem.EntityRef

/**
 * This is the game engine side of the player container. It doesn't
 * specify methods of input, only functionality that enables the user
 * to send it, as well as the ability to specify which entity that
 * should receive the players commands.
 */
trait PlayerEngineContainer {
  
  /** Returns the current player entity. */
  def player: Option[EntityRef]
  
  /** Sets the current player entity. */
  def player_=(entity: EntityRef)
  
  /** 
   * Lets the player specify input for a single action.
   * After that, this method must be called again to allow
   * more input.
   */
  def enableInput: Unit
  
  /** Returns a deep copy of the container. */
  def copy: PlayerEngineContainer
}